package main

import "fmt"

// Go 的结构体(struct) 是带类型的字段(fields)集合。 这在组织数据时非常有用。
// 你可以在初始化一个结构体元素时指定字段名字。省略的字段将被初始化为零值。
// & 前缀生成一个结构体指针。使用.来访问结构体字段。也可以对结构体指针使用.指针会被自动解引用。
// 结构体是可变(mutable)的。

type person struct {
	name string
	age int
}

func main() {
	fmt.Println(person{"Bob", 20})
	fmt.Println(person{name: "Alice", age: 30})
	fmt.Println(person{name: "Fred"})
	fmt.Println(&person{name: "Ann", age: 40})

	s := person{name: "Sean", age: 50}
	fmt.Println(s.name)
	
	sp := &s
	fmt.Println(sp.age)
	
	sp.age = 51
	fmt.Println(sp.age)
	
	s.name = "John"
	fmt.Println(sp.name)
}